<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        /**
         * async 帮助我们使用简洁的语法获得一个promise对象
         *  let promise = new Promise(function(){})
         *  async function aaa (){}
         *    1、async用户标识函数的async函数返回的结果就是一个promise
         *    2、方法如果正常return结果,promise状态就是resolved，return后的结果就是成功状态的返回值
         *    3、方法中出现了异常，则返回的promise就是一个失败状态
         *    4、async函数返回的结果是一个promise，则状态有内部的promise决定
         * 
         * await 帮助我们获取promise成功状态的返回值的关键字
         *    1、await右边如果是一个普通值，则直接返回该值
         *         let res = await "张三" 一般不这么用
         *       如果右边是promise，返回promise成功状态的结果
         *         let res = await Promise.resolve("张三") res最终的结果是"张三"
         *    2、await右边如果是一个失败状态的promise,那么await会直接抛异常
         *    3、await关键字必须在async修饰的函数中使用,但async函数中可以没有await
         *    4、await后边的代码会等待await执行完毕执行
        */
        
        async function fun1(){
            // 正常
            //return 10
            // 异常
            // throw new Error("losser")
            // 接受值就是该promise
            let promise = Promise.resolve("heihei")
            return promise
        }
        let promise = fun1()

        promise.then(function(value){
            console.log("success:"+value)

        }).catch(function(value){
            console.log("fail:"+value)
        })

        // 测试await
        async function fun2(){
            // 正常
            return 10
            // 异常
            // throw new Error("losser")
            // 接受值就是该promise
            // let promise = Promise.resolve("heihei")
            // return promise
        }

        async function fun3(){
            try{
                // let promise1 = fun2()
                // 直接获取promise值
                let res = await fun2()
                console.log("await:"+res)
                console.log("我得等待大哥")
            }catch(e){
                console.log(e)
            }

        }
        fun3()
        console.log("我不怕，我不等")
    </script>
</head>
<body>
    
</body>
</html>